package demo.JUnit5;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;

/**
 * @author 周成功
 * @email 86898837@qq.com
 * @date 2020年02月10日
 * 
 * 测试类和测试方法都不必是public
 * 
 */
@DisplayName("验证执行顺序")
@RunWith(JUnitPlatform.class)
class JupiterDemo02_标准测试类执行顺序 {
    @BeforeAll
    static void init() {
        System.out.println("@BeforeAll => 测试用例初始化数据");
    }
    
    @BeforeEach
    void tearup() {
        System.out.println("@BeforeEach => 每个测试方法启动前");
    }

    @AfterEach
    void tearDown() {
        System.out.println("@AfterEach => 每个测试方法结束后");
    }

    @Test
    @DisplayName("第一个测试方法")
    void testFirstTest() {
        System.out.println("@Test => 第一个测试方法执行");
    }

    @Tag("second")
    @Test
    @DisplayName("第二个测试方法")
    void testSecondTest() {
        System.out.println("@Test => 第二个测试方法执行");
    }
    
    @Test
    @Disabled("skip run")
    @DisplayName("厉害了")
    void skipRun() {
        System.out.println("@Test => disabled");
    }    
    
    @AfterAll
    static void cleanup() {
        System.out.println("@AfterAll => 测试用例清理数据");
    }
}
